import 'dart:convert';
import 'package:crypto/crypto.dart';

class MD5Utils {
  /// 对字符串进行 MD5 加密
  /// [input]：需要加密的字符串
  /// 返回：32位小写十六进制字符串
  static String encrypt(String input) {
    // 将字符串转换为 UTF-8 字节数组
    List<int> bytes = utf8.encode(input);
    // 计算 MD5 哈希值
    Digest digest = md5.convert(bytes);
    // 转换为十六进制字符串（32位小写）
    return digest.toString();
  }

  /// 对字符串进行 MD5 加密（大写）
  static String encryptUpper(String input) {
    return encrypt(input).toUpperCase();
  }

  /// 对文件字节进行 MD5 加密（用于文件校验）
  static Future<String> encryptFile(List<int> fileBytes) async {
    Digest digest = md5.convert(fileBytes);
    return digest.toString();
  }
}